#ifndef HASHSET_H
#define HASHSET_H

#include <stdbool.h>

// 定义节点结构
typedef struct Node {
    int key;
    struct Node* next;
} Node;

// 定义哈希集合结构
typedef struct {
    Node** buckets;
    int capacity;
    int size;
} HashSet;

// 创建哈希集合
HashSet* create_hashset(int capacity);

// 销毁哈希集合
void destroy_hashset(HashSet* set);

// 插入元素
bool hashset_add(HashSet* set, int key);

// 查找元素
bool hashset_contains(HashSet* set, int key);

// 删除元素
bool hashset_remove(HashSet* set, int key);

// 清空哈希集合
void hashset_clear(HashSet* set);

// 获取哈希集合大小
int hashset_size(HashSet* set);

// 遍历哈希集合
void hashset_iterate(HashSet* set, void (*func)(int key));

#endif // HASHSET_H
